package com.itheima.er_fen_fa;

/**
 * 二分法查找
 * 前提:数组里面的数字按照了从小到大的顺序来排列
 */
public class Demo01 {
    public static void main(String[] args) {
        int[] arr = {1,3,5,6,7,8,9,11,25,26,58,59,60,61};
        int num = 11;

      int index =  find(arr,num);
        System.out.println(index);
    }

    private static int find(int[] arr,int num) {
        //1.定义min和max确定查找的范围
        int min = 0;
        int max = arr.length - 1;
        //如果min <= max 继续循环查找
        while(min <= max){
            //计算出中间位置mid
            int mid = (min + max) / 2;
            //如果mid索引的值 > num
            if (arr[mid] > num){
              //表示要查找的元素在左边
                max = mid -1;
            }else if (arr[mid] < num){
                //如果mid索引的值 < num
                //表示要查找的元素在右边
                min = mid + 1;
            }else {
                //如果mid索引的值 == num
                //表示元素已经找到
                return mid;

            }


        }
        //如果min > max则表示元素不存在，返回-1
        return -1;
    }
}
